
// app.js
const { userAuth } = require('./utils/cloud')
const { toast, errorHandler } = require('./utils/uiHelper')

App({
  onLaunch: async function () {
    if (!wx.cloud) {
      console.error('请使用 2.2.3 或以上的基础库以使用云能力')
      return
    }

    // 初始化云开发环境
    wx.cloud.init({
      env: 'cloud1-0gvr39m6e061877d', // 替换为你的云开发环境ID
      traceUser: true
    })

    // 初始化全局数据
    this.globalData = {
      userInfo: null,
      isLogin: false,
      systemInfo: null
    }

    try {
      // 获取系统信息
      const systemInfo = wx.getSystemInfoSync()
      this.globalData.systemInfo = systemInfo

      // 检查登录状态
      const authResult = await userAuth.checkAuth()
      if (authResult.code === 0 && authResult.data) {
        this.globalData.userInfo = authResult.data
        this.globalData.isLogin = true
      }
    } catch (err) {
      console.error('初始化失败：', err)
      errorHandler.handle(err, '初始化失败')
    }
  },

  // 全局方法：用户登录
  async login() {
    try {
      toast.loading('登录中...')
      
      // 获取用户信息
      const { userInfo } = await wx.getUserProfile({
        desc: '用于完善用户资料'
      })

      // 调用登录云函数
      const result = await userAuth.login(userInfo)
      if (result.code === 0) {
        this.globalData.userInfo = result.data
        this.globalData.isLogin = true
        toast.success('登录成功')
        return true
      } else {
        throw new Error(result.msg)
      }
    } catch (err) {
      console.error('登录失败：', err)
      errorHandler.handle(err, '登录失败')
      return false
    } finally {
      toast.hideLoading()
    }
  },

  // 全局方法：检查登录状态
  checkLogin() {
    if (!this.globalData.isLogin) {
      wx.showModal({
        title: '提示',
        content: '请先登录',
        showCancel: false,
        success: () => {
          wx.switchTab({
            url: '/pages/user/index'
          })
        }
      })
      return false
    }
    return true
  },

  // 全局方法：获取用户信息
  getUserInfo() {
    return this.globalData.userInfo
  },

  // 全局方法：获取系统信息
  getSystemInfo() {
    return this.globalData.systemInfo
  },

  // 全局数据
  globalData: {
    userInfo: null,
    isLogin: false,
    systemInfo: null
  }
})